package modelo;

import java.util.ArrayList;

public class Tablero {
	
	public final static int FILAS = 10;
	public final static int COLUMNAS = FILAS;
	
	private ArrayList<Posicion> matriz = new ArrayList<Posicion>();
	private ArrayList<Nave> naves = new ArrayList<Nave>();
	private ArrayList<Mina> minas = new ArrayList<>();

	public Tablero (){
		
		for (int i = 1; i < 11 ; i++){
			int auxFila = i;
			
			for (int j = 1; j < 11; j++){
				
				int auxCol = j;				
				matriz.add(new Posicion(auxCol,auxFila));
				
			}			
		}		
	}
	 
	public void dispararNave(Posicion pos) {
		
		for (Nave unaNave: naves){
			if (unaNave.navegaEn(pos)) {
				unaNave.recibirDisparo(pos);
			}
		}
	}
	
	public void ingresarNave(Nave nave){
		this.naves.add(nave);
		
		// Agregar esta nave como nuevo objetivo de las minas
		for (Mina unaMina: minas) {
			unaMina.agregarObjetivo(nave);
		}
		
	}
	
	public Nave obtenerNave(int posicion){
		if (posicion >  (this.naves.size()-1) || posicion < 0){
			return null;
		}
		else{
			return this.naves.get(posicion);
		}
	}
	
	public ArrayList<Nave> obtenerListaNaves(){
		return this.naves;
	}
	
	public ArrayList<Mina> obtenerListaMinas(){
		return this.minas;
	}

	public void agregarMina(Mina mina) {
		this.minas.add(mina);
		
		// Actualizar objetivos de la mina
		for (Nave unaNave: naves) {
			mina.agregarObjetivo(unaNave);
		}
	}
	
	public void siguienteTurno() {
		
		// Mover las naves
		for (Nave unaNave: naves) {
			unaNave.moverNave();
		}
		
		// Actualizar las minas
		for (Mina unaMina: minas) {
			unaMina.actualizarDispositivo();
		}
	}
	
}
